<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>周日4题</title>
</head>
<body>
    <script>
        // 1、
        // for(var i=1;i<=5; i++){

        //     (function(i){
        //         setTimeout(function timer(){
        //             console.log(i); // 1 2 3 4 5 
        //         },i*1000)
        //     })(i)
        // }
        // console.log(i);     // 6   1,2,3,4,5
        // for循环是同步，setTimeout是异步宏任务。 因为for循环的结束条件是 i<=5，for循环需要满足循环条件后结束，结束时i是6。
        // 接着执行满足条件1<=5的代码 1 2 3 4 5
        
        // 2、
        // var obj1={a:1,b:2,c:3,d:{e:4}}
        // var obj2 = {...obj1}
        // obj1.a = 2
        // obj1.d.e = 5
        // console.log(obj2);    // obj.a 1,2,3,d:{e:5}
        // 展开运算符对单层是深拷贝，对多层是浅拷贝，所以obj2.d.e中的内容会被改变。

        //  3、
        // setTimeout(function(){
        //     console.log(1);
        // },0)
        // new Promise(function(resolve){
        //     console.log(2);
        //     resolve()
        //     console.log(3);
        // }).then(function(){
        //     console.log(4);
        // })

       //setTimeout是一个宏任务，先存入宏任务队列当中，代码继续向下执行。
       // 遇到 new Promise() promise构造函数中的代码是同步执行的，then和catch是异步执行，会在构造函数中的同步代码执行完毕后执行 
       // 2 3 4 1

    // 4、
    // 1、new Set()方法
    // const arr=[12,24,37,24,49,49,55,68]
    // const s = new Set(arr)
    // console.log([...s]);
    // ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值。

    // 2、Map()
    const arr=[12,24,37,24,49,49,55,68]
    const m = new Map()
    const arr1 = []
    for(let i=0;i<arr.length; i++){
        m.set(arr[i],'key')
    }
    console.log(m);
    m.forEach((value,key)=>{
        arr1.push(key)
    })
    console.log(arr1);

    // 循环通过Map.set来添加新的键值，已存在的不会被添加。之后再通过forEach遍历Map，把取出的值存入新数组中，实现去重。

    // indexOf
    // 定义一个空的数组用来存放符合条件的数字
    // 通过for循环 遍历数组 判断符合条件数字的下标 并将符合条件的数字 放到新的数组里面
    // 作用：查找指定元素的位置
    // 判断返回值，找到返回第一次查到的索引，未找到返回-1。存入到新数组，并不会改变原数组
        // var arr=[12,24,37,24,49,49,55,68];
        // var arr1=[];
        // for(var i=0;i<arr.length;i++){
        //     if(arr1.indexOf(arr[i])==-1){
        //         arr1.push(arr[i]);
        //     }
        // }
        // console.log(arr1);
    </script>
</body>
</html>